Distributed computing systems are generally known in the art. However, known distributed computing systems such as grid computing systems typically divide a single large computing task into sub-tasks, and each participant in the grid computing system performs or solves the sub-task that it was given. In addition, each distributed computer generally only works on its assigned sub-task when its processor or other resources necessary to the sub-task would otherwise be idle. Also, each distributed computer node is required to trust a central authority to execute code on the node's machine with little control over what that code is able to do.
For example, one known distributed computing system is the Intel-United Devices Cancer Research Project sponsored by United Devices, Inc. of Austin, Tex. and Intel Corporation of Santa Clara, Calif. The Cancer Research Project allows PC owners to volunteer idle processor time on their own computers to help find a cure for cancer. Each user downloads a software client that periodically receives a research sub-task from a server, and performs the sub-task when the local computer processor would otherwise be idle. Upon completion of the sub-task, the local client sends the results to the server, and receives a new sub-task. At all times the local client is dependent on the central server that divides the task into sub-tasks and assigns sub-tasks to volunteer client machines. In addition, each client does not contribute to the computing space except that the client performs an assigned sub-task. That is, each client only executes sub-tasks defined by the server; each client is not capable of executing any arbitrary application program. Finally, the nodes must rely on United Devices to ensure that code or data coming from the server will execute in a manner that will not harm other components of the machine, such as data on the hard drive. This known system is bounded by the ability of the central server to assign sub-tasks to each of the nodes for processing.
Another known pseudo-distributed computing space is demonstrated by online roll-playing games such as Ultima Online®. In an online roll-playing game (RPG), each remote user typically must log in to a central server that administers and oversees the game play of the RPG. The virtual world in which characters live is defined by and maintained by the central server, and appears identical to each remote client (player characters) connected to that central server. In addition, all interaction between players goes through the central server. Thus, while online RPGs may be thought of as distributed computing environments, they are in fact large client-server applications.
In both of the above-described environments, the system can be disrupted by a client machine whose local client software has been altered. In addition, there is a potential that an attacker can inject malicious software onto a computer or into the networked environment by altering or modifying the client software on one or more nodes in the distributed system. For example, if a client application performing cancer research is altered by an end-user, the client may return incorrect research results to the server, or may be able to break into the server and determine locations of other client machines, which it may then attack. If a client application in the online RPG is altered, an end-user may be allowed to cheat or otherwise disrupt game play.
Known virus protection software only provides a limited defense against such attacks because virus protection software typically protects only against external attackers. That is, virus protection software does not protect against an end-user modifying his or her own client software and injecting malicious code or messages into a networked environment. Instead, virus protection software only protects against incoming viruses and the like.
Thus, it would be an advancement in the art to be able to ensure that, in a networked environment, client software on a node has not been altered. It would be a further advancement in the art to ensure that communications received by one node in a network did not originate from another node in the network whose network client software has been altered or modified without authorization.